/*
	File:		MainMenuState.h
	Course:		SGD 1301
	Author:		dmonroe
	Purpose:	CMainMenuState class handles the main menu
*/


#pragma once

#include "IGameState.h"
#include <vector>

// Wrappers
class CSGD_DirectInput;
class CSGD_TextureManager;
class CBitmapFont;

struct SMenuItem;
struct SBackgroundItem;
////////////////////////////////////////////////////////////
// CMainMenuState class
//	- game state to handle main menu
class CMainMenuState : public IGameState
{
public:
	////////////////////////////////////////////////////////
	// SINGLETON!
	static CMainMenuState* GetInstance( void );
	
	
	////////////////////////////////////////////////////////
	// IGameState Interface:
	virtual void	Enter	( void );			// load resources
	virtual void	Exit	( void );			// unload resources

	virtual bool	Input	( void );			// handle user input
	virtual void	Update	( float fElapsedTime );	// update game entities
	virtual void	Render	( void );			// render game entities
	

private:
	////////////////////////////////////////////////////////
	// Singleton - not dynamically allocated
	CMainMenuState( void );
	virtual ~CMainMenuState( void );
	CMainMenuState( const CMainMenuState& );
	CMainMenuState& operator= ( const CMainMenuState& );
	
	////////////////////////////////////////////////////////
	// Wrappers
	CSGD_DirectInput*		m_pDI;
	CSGD_TextureManager*	m_pTM;
	CBitmapFont*			m_pFont;
	
	////////////////////////////////////////////////////////
	//menu items
	std::vector<SMenuItem*> menuVector;
	float sinWave;
	SBackgroundItem* shipBI;

	////////////////////////////////////////////////////////
	// Image Asset
	int						m_nCursorImageID;
	int						m_nShipImageID;
	int						m_nCursorPos;
	int						m_nMenuSize;
};

